import os
import sys
from win32com.client import Dispatch


def create_folder_shortcut(folder_path, shortcut_path):
    """
    为指定文件夹创建快捷方式

    Args:
        folder_path: 源文件夹的完整路径
        shortcut_path: 要创建的快捷方式的完整路径（包括.lnk扩展名）
    """
    try:
        shell = Dispatch('WScript.Shell')
        shortcut = shell.CreateShortCut(shortcut_path)
        shortcut.TargetPath = folder_path
        shortcut.WorkingDirectory = os.path.dirname(folder_path)
        shortcut.Description = f"Shortcut to {os.path.basename(folder_path)}"
        shortcut.save()
        print(f"成功创建快捷方式: {shortcut_path}")
        return True
    except Exception as e:
        print(f"创建快捷方式失败 {shortcut_path}: {e}")
        return False


def create_shortcuts_for_folders(source_dir, output_dir=None):
    """
    遍历指定目录下的所有文件夹并创建快捷方式

    Args:
        source_dir: 要遍历的源目录
        output_dir: 快捷方式保存目录（默认为源目录下的'Shortcuts'文件夹）
    """
    # 检查源目录是否存在
    if not os.path.exists(source_dir):
        print(f"错误: 源目录不存在 - {source_dir}")
        return False

    if not os.path.isdir(source_dir):
        print(f"错误: 指定的路径不是目录 - {source_dir}")
        return False

    # 设置输出目录
    if output_dir is None:
        output_dir = os.path.join(source_dir, "Shortcuts")

    # 创建输出目录（如果不存在）
    if not os.path.exists(output_dir):
        try:
            os.makedirs(output_dir)
            print(f"创建输出目录: {output_dir}")
        except Exception as e:
            print(f"创建输出目录失败 {output_dir}: {e}")
            return False

    # 获取源目录下的所有项
    try:
        items = os.listdir(source_dir)
    except Exception as e:
        print(f"无法读取目录内容 {source_dir}: {e}")
        return False

    # 筛选出文件夹（排除文件）
    folders = []
    for item in items:
        item_path = os.path.join(source_dir, item)
        if os.path.isdir(item_path):
            folders.append(item)

    print(f"在目录 '{source_dir}' 中找到 {len(folders)} 个文件夹")

    # 为每个文件夹创建快捷方式
    success_count = 0
    for folder in folders:
        folder_path = os.path.join(source_dir, folder)
        shortcut_name = f"{folder}.lnk"
        shortcut_path = os.path.join(output_dir, shortcut_name)

        if create_folder_shortcut(folder_path, shortcut_path):
            success_count += 1

    print(f"\n完成! 成功创建 {success_count}/{len(folders)} 个快捷方式")
    print(f"快捷方式保存在: {output_dir}")
    return True


if __name__ == "__main__":
    # 设置要遍历的目录路径
    target_directory = r"\\diskstation2\8192G_01\goodsync"  # 修改为你的目录路径

    # 可选：设置快捷方式保存目录（如果为None，则保存在源目录下的Shortcuts文件夹中）
    shortcut_output_directory = None  # 可以修改为特定路径，如 r"C:\Shortcuts"

    # 执行创建快捷方式的操作
    create_shortcuts_for_folders(target_directory, shortcut_output_directory)